import java.util.*;

/**
 * @author LKQ
 * @date 2022/4/10 8:57
 * @description
 */
public class Solution {
    public static void main(String[] args) {

    }
    public int maxDistance(int[] position, int m) {
        Arrays.sort(position);
        int n = position.length;
        // 最小磁力l = 1, 最大磁力为 最大值减去最小值
        int l = 1, r = position[n-1] - position[0], ans = -1;
        while (l <= r) {
            // mid此时代表磁力
            int mid = (l + r) / 2;
            if (check(position, mid, m)) {
                // 篮子中每隔mid位置能放下一个球，最后m个球都能放置，说明符合条件, 磁力继续加大
                ans = mid;
                l = mid + 1;
            }else {
                r = mid - 1;
            }
        }
        return ans;
    }
    public boolean check(int[] po, int k, int m) {
        // 要求最小磁力均大于等于k,那么说明每隔k位置都能放置一个球，贪心 初始位置放置一个, 然后篮子位置间隔大于k继续放下一个
        int pre = po[0], cnt = 1;
        for(int i = 1; i < po.length; i++) {
            if (po[i] - pre >= k) {
                pre = po[i];
                cnt++;
            }
        }
        return cnt >= m;
    }
}
